// src/api/request.js
import axios from 'axios'

// 创建 axios 实例
const request = axios.create({
    baseURL: 'http://localhost:8088', // 后端地址（根据你的 Spring Boot 端口调整）
    timeout: 10000
})

// 请求拦截器：自动携带 token
request.interceptors.request.use(
    config => {
        const token = localStorage.getItem('token')
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`
        }
        return config
    },
    error => Promise.reject(error)
)

// 响应拦截器：统一处理错误 + 自动补全图片路径
request.interceptors.response.use(
    response => {
        const data = response.data

        // 自动处理用户头像 image 字段（适用于 /api/user/profile 等接口）
        if (data.data && typeof data.data === 'object') {
            // 如果 data.data.image 存在且是相对路径（以 / 开头），则自动拼接 baseURL
            if (data.data.image && data.data.image.startsWith('/')) {
                data.data.image = `${request.defaults.baseURL}${data.data.image}`
            }
            // 如果还有 avatar 字段，也一并处理（可选）
            if (data.data.avatar && data.data.avatar.startsWith('/')) {
                data.data.avatar = `${request.defaults.baseURL}${data.data.avatar}`
            }
            // 处理合同预览图片 URL
            if (data.data.imgUrl && data.data.imgUrl.startsWith('/')) {
                data.data.imgUrl = `${request.defaults.baseURL}${data.data.imgUrl}`
            }
        }

        // 如果是数组，遍历处理（适用于列表接口，如用户列表）
        if (Array.isArray(data.data)) {
            data.data = data.data.map(item => {
                if (item.image && item.image.startsWith('/')) {
                    item.image = `${request.defaults.baseURL}${item.image}`
                }
                if (item.avatar && item.avatar.startsWith('/')) {
                    item.avatar = `${request.defaults.baseURL}${item.avatar}`
                }
                // 处理合同预览图片 URL
                if (item.imgUrl && item.imgUrl.startsWith('/')) {
                    item.imgUrl = `${request.defaults.baseURL}${item.imgUrl}`
                }
                return item
            })
        }

        return data //  最终返回处理后的 data
    },
    error => {
        console.error('请求失败:', error)
        alert(error.response?.data?.msg || '请求失败，请重试')
        return Promise.reject(error)
    }
)

export default request